1. Technical Field of the Invention
The present invention relates generally to the field of cache memory, and more specifically, to caching and enumerating data objects in distributed file systems.
2. Description of the Related Art
There will now be provided a discussion of various topics to provide a proper foundation for understanding the present invention.
Computer workstations have increased in power and storage capacity. Workstations were originally used by a single operator to perform one or more isolated tasks. The increased deployment of workstations to many users within an organization has created a need to communicate between workstations and share data between users. This has led to the development of distributed file system architectures.
A typical distributed file system comprises a plurality of clients and servers interconnected by a local area network (LAN) or wide area network (WAN). The sharing of files across such networks has evolved over time. The simplest form of sharing data allows a client to request files from a remote server. Data is then sent to the client and any changes or modifications to the data are returned to the server. Appropriate locks are created so that one client does not change the data in a file being manipulated by another client.
Distributed file systems improve on the efficiency of processing of distributed files by creating a file cache at each client location that accesses server data. This cache is referenced by client applications and only a cache miss causes data to be fetched from the server. Caching of data reduces network traffic and speeds response time at the client.
In order to decrease the latency for information access, some implementations use distributed caches. Distributed caches appear to provide an opportunity to combat this latency allowing users to benefit from data fetched by other users. The distributed architectures allow clients to access information found in a common place. Distributed caches define a hierarchy of data caches in which data access proceeds as follows: a client sends a request to a cache, and if the cache contains the data requested by the client, the ache sends back the requested data. Otherwise, the cache may request its neighbors for the data, but if none of the neighbors serve the request, then the cache sends the request to its parent. This process recursively continues down the hierarchy until data is fetched from the server. One example of such a distributed cache is shown by Nir Peleg in PCT patent application number US01/19567, entitled “Scalable Distributed Hierarchical Cache”, assigned to common assignee and is hereby referenced for all it discloses.
Caches hold files in the same way that they are saved in the servers, thus caches must have the same file layout as servers. Typically, servers arrange the files in blocks, and therefore, the cache's files are also arranged in blocks. In order to save a file in the cache, the entire block must be saved. This causes a waste of cache resources.
Enumeration is a process in which the client enumerates files or objects in the server, i.e., listing the files on a server along with their attributes. For example, the “is” command used in UNIX operating systems lists the content of the server. In a file system having a huge number of files the listing operation consumes a considerable amount of time.
Therefore, it would be an advantageous to have a method for caching and enumerating data, namely caching the server objects in a defined order. It would be further advantageous if a caching method enables the use of caches that are not associated with the server layout.